package br.com.ufrn.aipetro.ga.domain.entity.device.actuator.bomb;

import java.util.Date;

import br.com.ufrn.aipetro.ga.domain.entity.device.Critical;
import br.com.ufrn.aipetro.ga.domain.entity.device.OperationStatus;
import br.com.ufrn.aipetro.ga.domain.entity.device.Protocol;
import br.com.ufrn.aipetro.ga.domain.entity.device.actuator.Actuator;
import br.com.ufrn.aipetro.ga.domain.entity.mesh.Mesh;

public class Bomb extends Actuator {
	
	public static final String OUTPUT_PROPERTY = "output";
	public static final String LIFTING_PROPERTY = "lifting";
	public static final String ROTATIONS_PROPERTY = "rotations";
	
	private float output;
	private float lifting;
	private float rotations;
	/**
	 * 
	 */
	public Bomb() {
		super();
		// TODO Auto-generated constructor stub
	}
	/**
	 * @param hysteresis
	 * @param rangeability
	 * @param temperatureCurrent
	 * @param temperatureMin
	 * @param temperatureMax
	 * @param deviceId
	 * @param serialNumber
	 * @param model
	 * @param manufacturer
	 * @param mesh
	 * @param tag
	 * @param operationStatus
	 * @param protocol
	 * @param critical
	 * @param dateOperationStart
	 * @param dateOperationFinish
	 */
	public Bomb(float output, float lifting, float rotations,
			float hysteresis, float rangeability, float temperatureCurrent,
			float temperatureMin, float temperatureMax, String deviceId,
			String serialNumber, String model, String manufacturer, Mesh mesh,
			String tag, OperationStatus operationStatus, Protocol protocol,
			Critical critical, Date dateOperationStart, Date dateOperationFinish) {
			
		super(hysteresis, rangeability, temperatureCurrent, temperatureMin,
				temperatureMax, deviceId, serialNumber, model, manufacturer, mesh, tag,
				operationStatus, protocol, critical, dateOperationStart,
				dateOperationFinish);
		
		this.output = output;
		this.lifting = lifting;
		this.rotations = rotations;
	}
	/**
	 * @return the output
	 */
	public float getOutput() {
		return output;
	}
	/**
	 * @param output the output to set
	 */
	public void setOutput(float output) {
		float oldOutput = this.output;
		this.output = output;
		
		firePropertyChange(OUTPUT_PROPERTY, oldOutput, output);
	}
	/**
	 * @return the lifting
	 */
	public float getLifting() {
		return lifting;
	}
	/**
	 * @param lifting the lifting to set
	 */
	public void setLifting(float lifting) {
		float oldLifting = this.lifting;
		this.lifting = lifting;
		
		firePropertyChange(OUTPUT_PROPERTY, oldLifting, lifting);
	}
	/**
	 * @return the rotations
	 */
	public float getRotations() {
		return rotations;
	}
	/**
	 * @param rotations the rotations to set
	 */
	public void setRotations(float rotations) {
		float oldRotations = this.rotations;
		this.rotations = rotations;
		
		firePropertyChange(OUTPUT_PROPERTY, oldRotations, rotations);
	}

}
